NAND flash memory, as well as other types of non-volatile memories (“NVMs”), are commonly used in electronic devices for mass storage. For example, consumer electronics such as portable media players often include flash memory to store music, videos, and other media.
Electrically programmable and erasable non-volatile memories, such as NAND flash, can store charge in transistors (which are sometimes referred to as cells). The transistors can be constructed to be a single bit cell (sometimes referred to as a single level cell (SLC)) or a multi bit cell (sometimes referred to as multi level cell (MLC)). These cells are packaged together to form pages, and the pages are packaged together to form blocks.
Data is stored in the cells and as the cells gain or lose charge, they may experience a bit flip. Bit flips can be caused by any number of reasons, including, for example, read disturbs (which can add charge), timely retention (which can result in loss of charge), and physical failure of the die. Bit flips are generally more common in MLC Nand than SLC Nand. Moreover, as Nand lithography continues to shrink, Nand may become even more susceptible to bit flips.
Systems using Nand can compensate for bit flips using any suitable error correction technique, but typically only up to a certain threshold. For example, error correction codes can be used. If the threshold is exceeded, the bit flips cannot be corrected and the data cannot be used. In some situations, however, the system may refresh the Nand before the number of bit flips reaches a point beyond that which can be corrected. A refresh operation restores the cells in a page, a block, or a virtual block to their initially programmed charge states, or to a charge state substantially similar to their initially programmed charge states. While refresh operations are useful for restoring pages, blocks, or virtual blocks to or close to their initially programmed charge states, some cells in a page or block may not physically be capable of retaining charge for a minimum period of time, even after being refreshed. Continuously refreshing such pages or blocks may become a prohibitive maintenance operation.